\chapter{Arborescence des pages}

\section{La problématique}

Le point central d'un site internet, ce sont les pages.

Nous souhaitions que le site soit entièrement multilingue.

De plus, afin d'améliorer le référencement, les adresses URL des pages
devaient-être traduisible tout en gardant la possibilité de passer
d'une langue à une autre en restant sur la même page.

Enfin, les pages devaient pouvoir être affiché dans des menus avec un
titre court et dans les titres de fenêtres avec un titre long pour un
meilleur référencement.

Le tout devant évidement être configurable entièrement depuis
l'administration du site.

\section{Notre solution}

Chaque page possède un titre et un titre spécifique pour les menus.
Un système d'onglets permet de remplir le contenu d'une page dans les
différentes langues du site.

En fonction du titre, un champ slug est renseignée avec l'url de la
page dans la bonne langue.

Des checkbox permettent d'afficher la page dans le menu primaire ou
secondaire.

Il est possible d'imbriquer les pages les unes dans les autres en
sélectionnant une page parent.

Afin de permettre à des non programmeurs de renseigner le contenu du site, nous avons mis en place un éditeur WYSIWYG\footnote{What You See Is What You Get : Éditeur HTML permettant de modifier le texte comme dans n'importe quel logiciel de traitement de texte.}.

\section{Les améliorations}

Dans l'urgence, nous avons donné à chaque menu un champ \texttt{order}
donnant l'ordre de la page dans le menu par rapport aux autres pages
d'une même rubrique.

Il faut améliorer le formulaire de réorganisation des menus en
utilisant la représentation intervalaire\footnote{\url{http://www.siteduzero.com/tutoriel-3-38130-la-representation-intervallaire.html}} des arbres dans une base de
données.

L'app \texttt{django-mptt} peut-être utilisé à cet effet.

\image{fonctionnalites/SQLTreeRepresentation}{Représentation intervalaire d'un arbre en SQL}{0.6}
